﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;

namespace Pantallazos
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            CreateCSVFile(REPORT_GENERAL_PUESTO(), Pantallazos.Properties.Settings.Default.Ruta + DateTime.Now.ToString("HH_mm_ss") + ".csv");
            CreateCSVFile(REPORT_FRT(), Pantallazos.Properties.Settings.Default.Ruta2 + DateTime.Now.ToString("HH_mm_ss") + ".csv");
            
            //long Cantidad = ObtenerCantidad();

            //System.IO.StreamWriter file = new System.IO.StreamWriter(Pantallazos.Properties.Settings.Default.Ruta2 + "Publicados_" + Cantidad.ToString() + "_Hora_" + DateTime.Now.ToString("HH_mm_ss") + ".txt");
            //file.WriteLine(DateTime.Now.ToString("HH:mm") + ": Publicados " + Cantidad.ToString());
            //file.Close();
            
            System.Environment.Exit(0);
        }

        public DataTable REPORT_GENERAL_PUESTO()
        {
            try
            {
                SqlConnection con = new SqlConnection(Pantallazos.Properties.Settings.Default.CARTAGENAConnectionString);
                SqlDataAdapter listarPerfiles = new SqlDataAdapter("SELECT nombrempio, case NOMBREPUESTO when'I.E. ANTONIA SANTOS'then'*'+NOMBREPUESTO when'I.E. NUEVO BOSQUE-ANTIGUO TER'then'*'+NOMBREPUESTO when'I.E. CORAZON DE MARIA'then'*'+NOMBREPUESTO when'COLEGIO DE LA ESPERANZA'then'*'+NOMBREPUESTO else NOMBREPUESTO end AS[Puesto],COUNT(MESA)AS[M.Esperadas],dbo.hojaspublicadaspuesto( NOMBREMPIO,NOMBREPUESTO)[M.Publicadas],CONVERT(VARCHAR(50),CAST(CAST(dbo.hojaspublicadaspuesto(NOMBREMPIO ,NOMBREPUESTO)AS DECIMAL(9,4))*100/CAST(COUNT(MESA)AS DECIMAL)AS DECIMAL(9,2)))+'%'AS[Porcentaje]FROM DIVIPOL WITH(NOLOCK)GROUP BY NOMBREMPIO,NOMBREPUESTO ORDER BY NOMBREMPIO, NOMBREPUESTO", con);
                DataTable dtdatos = new DataTable();
                listarPerfiles.Fill(dtdatos);
                return dtdatos;
            }
            catch { return null; }
        }

        public DataTable REPORT_FRT()
        {
            try
            {
                SqlConnection con = new SqlConnection(Pantallazos.Properties.Settings.Default.CARTAGENAConnectionString);
                SqlDataAdapter listarPerfiles = new SqlDataAdapter("SELECT divipol, case lower(ESTADO) when 'pub' then 'Publicado' else 'Pendiente' end as 'Estado' FROM DIVIPOL order by 1", con);
                DataTable dtdatos = new DataTable();
                listarPerfiles.Fill(dtdatos);
                return dtdatos;
            }
            catch { return null; }
        }

        public long ObtenerCantidad()
        {
            try
            {
                SqlConnection con = new SqlConnection(Pantallazos.Properties.Settings.Default.CARTAGENAConnectionString);
                SqlDataAdapter listarPerfiles = new SqlDataAdapter("SELECT COUNT(ESTADO) as ESTADO FROM DIVIPOL where lower(ESTADO)='pub'", con);
                DataTable dtdatos = new DataTable();
                listarPerfiles.Fill(dtdatos);
                return Convert.ToInt64(dtdatos.Rows[0][0]);
            }
            catch { return 0; }
        }

        public void CreateCSVFile(DataTable dt, string strFilePath)
        {
            #region Export Grid to CSV
            // Create the CSV file to which grid data will be exported.
            StreamWriter sw = new StreamWriter(strFilePath, false);
            // First we will write the headers.
            //DataTable dt = m_dsProducts.Tables[0];
            int iColCount = dt.Columns.Count;
            for (int i = 0; i < iColCount; i++)
            {
                sw.Write(dt.Columns[i]);
                if (i < iColCount - 1)
                {
                    sw.Write(",");
                }
            }
            sw.Write(sw.NewLine);
            // Now write all the rows.
            foreach (DataRow dr in dt.Rows)
            {
                for (int i = 0; i < iColCount; i++)
                {
                    if (!Convert.IsDBNull(dr[i]))
                    {
                        sw.Write(dr[i].ToString());
                    }
                    if (i < iColCount - 1)
                    {
                        sw.Write(",");
                    }
                }
                sw.Write(sw.NewLine);
            }
            sw.Close();
            #endregion
        }
    }
}
